class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> B=nums;
        sort(nums.begin(),nums.end());
        int i=0;
        int j=nums.size()-1;\
        int a,b;
        vector<int> A;
        //为了避免一开始nums[i]+nums[j]>target的情况，i会不动。等j走到合适位置下一轮i才会动。
        while(i<j)
        {
            while(i<j&&(nums[i]+nums[j]<target))
            {
                i++;
            }
                while(i<j&&(nums[i]+nums[j]>target))
            {
                j--;
            }
            
            if(nums[i]+nums[j]==target)
            {
                a=nums[i];
                b=nums[j];
                break;
            }
        }
       
        i=0;
        j=nums.size()-1;
        while(i<j&&(B[i]!=a)&&(B[i]!=b))
        {
            i++;
        }
         while(i<j&&(B[j]!=b)&&(B[j]!=a))
        {
            j--;
        }

         A.push_back(i);
         A.push_back(j);
        return A;
       
    }
};